package com.vfa.fishing.common;

import org.anddev.andengine.entity.sprite.AnimatedSprite;
import org.anddev.andengine.opengl.texture.region.TiledTextureRegion;
import android.os.Parcelable;
import com.vfa.fishing.MenuActivity;

//    private static final long serialVersionUID = -7932293913196756290L;
public abstract class AbstractObject extends AnimatedSprite implements Parcelable {
    private static final long serialVersionUID = 1L;
    public int kindOfObject;// doi tuong nay la gi??
    public static int x =0;
    public static int y =0;
    public static  int z =0;
    public boolean Visible;
    public float  speedX;
    public float  speedY;
    public int kind;// loai ca
    public int direction;// huong di chuyen
    public int sideAppear;// huong xuat hien
    public int iTimer;
    public int weight;
    public int iTimeToResetDirect;
    public boolean isReset;
  //  static TiledTextureRegion pTextureRegion;
//    public static TiledTextureRegion tile = GameActivity.mfishing111111IconTextureRegion;
//    public AbstractObject(){
//         super(x,y,tile);
//    }
     public AbstractObject(int x,int y,TiledTextureRegion pTextureRegion,int sideApp){
            super(x,y,pTextureRegion);
            kindOfObject = -1;// chua xac dinh la thu gi
     }
     public AbstractObject(int x,int y,TiledTextureRegion pTextureRegion){
         super(x,y,pTextureRegion);
         kindOfObject = -1;// chua xac dinh la thu gi
  }

   //  public AbstractObject(Parcel in){
         // super(x,y,pTextureRegion);
   // }

     /** Mỗi đối tượng thừa kế từ lớp này sẽ phải override lại,mỗi đội tượng đó sẽ có phương thức update*/
     public abstract void update();
     /**kiểm tra va chạm với 4 biên*/
     public  boolean checkCollision() {
         if(this.getX()+this.getWidth() >= MenuActivity.CAMERA_WIDTH + MenuActivity.CAMERA_WIDTH / 2 + 70 ||  this.getX() <= -40) {// nếu nhở hơn biên trái 40 và lớn hơn biên phải 70 thì return true
             return true;
         }else return false;
     } // kiem tra collision voi bien
     /**kiem tra va chạm của hai đối tượng thừa kế từ lớp này*/
     public  boolean checkCollision(AbstractObject obj){
         if(Constant.checkCollision((int)obj.getX(), (int)obj.getY(),(int)this.getX(), (int)this.getY(), (int)(this.getX()+this.getWidth()),(int)(this.getY()+this.getHeight()))){
             return true;
         }
         return false;
     } //kiem tra collision giua 2 object
     /** những đối tượng có thuộc tính là terrible,;là những đối tượng có thể tấn công người và ăn những đối tượng nhỏ khác*/
     public abstract void Eat();
    public abstract void resetDirection();
    public abstract int getCoin();
    public int converResetToInt(){
        if(isReset){
            return 1;
        }
        return 0;
    }
    public int convertToInt(boolean a){
        if(a){
            return 1;
        }
        return 0;
    }
}
